/** 教程链接：
 * https://dart.cn/language/#functions
 */

void main() {
  // 一般建议为每个函数的参数以及返回值都指定类型：
  int fibonacci(int n) {
    if (n == 0 || n == 1) return n;
    return fibonacci(n - 1) + fibonacci(n - 2);
  }

  var result = fibonacci(20);
  print('fibonacci(20) = $result');

  var flybyObjects = ['Jupiter', 'Saturn', 'Uranus', 'Neptune'];

  // => (胖箭头) 简写语法用于仅包含一条语句的函数。
  // 该语法在将匿名函数作为参数传递时非常有用：
  flybyObjects
      .where((name) => name.contains('turn'))
      .forEach(print);

  /**
   * 上面的示例展示了匿名函数（上例中传入 where() 函数的参数即是一个匿名函数）外，
   * 还展示了将函数作为参数使用的方式：上面示例将顶层函数 print() 作为参数传给了 forEach() 函数。
   */
}
